﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BibliotecaProjeto.usuario;
using BibliotecaProjeto.persistencia;
using BibliotecaProjeto.atendente;
using BibliotecaProjeto.estacao;
using BibliotecaProjeto.bicicleta;
using BibliotecaProjeto.aluguel;
using BibliotecaProjeto.fachada;
using BibliotecaProjeto.passe;
using BibliotecaProjeto.tipoPasse;


namespace ProjetoGui
{
    public partial class realAluguel : Form
    {
        DadosUsuario dadosUser = new DadosUsuario();
        Usuario user = new Usuario();
        Atendente atd = new Atendente();
        Estacao est = new Estacao();
        Bicicleta bic = new Bicicleta();
        Aluguel alug = new Aluguel();
        Fachada fachada = new Fachada();
        TipoPasse tPasse = new TipoPasse();

        string nomeUser, numTelefone, numCartao, cpfUser, nomeAtd, codEst, nomeEst, codBic;
        int matAtd, tipoPasse;
        
        public realAluguel()
        {
            InitializeComponent();

            tbDataIn.Text = DateTime.Now.ToString("dd/MM/yyyy");
            tbHoraIn.Text = DateTime.Now.ToString("HH:mm");
            tbCpf.MaxLength = 11;
        }


        //Botão realizar aluguel
        private void btnOk_Click_1(object sender, EventArgs e)
        {
            tbDataFin.Clear();
            tbHoraIn.Clear();

            if(cbPasse.SelectedIndex <= -1){
                MessageBox.Show("Escolher o passe");
                cbPasse.Focus();
                tbDataFin.Clear();
                tbHoraIn.Clear();  
                return;
            }
            
            else if ((cbPasse.SelectedIndex == 0)&&(tPasse.codigo == 1))
            {
                tbDataFin.Text = DateTime.Now.AddDays(1).ToString("dd/MM/yyyy");
                tbHoraFin.Text = DateTime.Now.AddHours(24).ToString("HH:mm");
            }

            else {
                tbDataFin.Text = DateTime.Now.AddDays(30).ToString("dd/MM/yyyy");
                tbHoraFin.Text = DateTime.Now.AddHours(720).ToString("HH:mm");
            }

            tbDataIn.Text = DateTime.Now.ToString("dd/MM/yyyy");
            tbHoraIn.Text = DateTime.Now.ToString("HH:mm");
                       
            //variáveis
            alug.atdMat = matAtd;
            alug.usuCpf = cpfUser;
            alug.estCod = codEst;
            alug.bicCod = codBic;
            alug.tipoPasseCod = tipoPasse;
            
            if ((cbPasse.SelectedIndex == 0)&&(tPasse.codigo == 1))
            {
                alug.horaIni = DateTime.Now;
                alug.horaFim = DateTime.Now.AddHours(24);
                alug.dataIni = DateTime.Now;
                alug.dataFim = DateTime.Now.AddDays(1);
            }

            else {
                alug.horaIni = DateTime.Now;
                alug.horaFim = DateTime.Now.AddHours(720);
                alug.dataIni = DateTime.Now;
                alug.dataFim = DateTime.Now.AddDays(30);
            }


            fachada.inserir(alug);

            MessageBox.Show("Cadastro Realizado com Sucesso!");

            leetSocket1.sendObject("Aluguel Realizado com Sucesso! \nEstação: " + codEst + "\nBicicleta de número: " + codBic);
        }


        //Botão cancelar
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        //Botão buscar usuário
        private void btnBuscar_Click(object sender, EventArgs e)
        {

            user.cpf = tbCpf.Text;
            tbCpf.Clear();

            List<Usuario> lista = new DadosUsuario().buscar(user);
            
            for (int i = 0; i < lista.Count; i++)
            {
            ListViewItem item = lvUserAluguel.Items.Add(lista.ElementAt(i).cpf);
                item.SubItems.Add(lista.ElementAt(i).nome);
                item.SubItems.Add(lista.ElementAt(i).numeroCartaoCredito);
                item.SubItems.Add(lista.ElementAt(i).numeroTelefone);

                cpfUser = item.SubItems[0].Text;
                nomeUser = item.SubItems[1].Text;
                numCartao = item.SubItems[2].Text;
                numTelefone = item.SubItems[3].Text;
            }

        }


        //Botão buscar atendente
        private void btBuscarAtend_Click(object sender, EventArgs e)
        {
            atd.matricula = Int32.Parse(tbPesqAtendente.Text);
            tbPesqAtendente.Clear();

            List<Atendente> lista2 = new DadosAtendente().buscar(atd);

            for (int i = 0; i < lista2.Count; i++)
            {
                lbMatAtd.Text = "Mat: " + lista2.ElementAt(i).matricula + "";
                lbNomeAtd.Text = "Atd: " + lista2.ElementAt(i).nomeAtendente + "";
                matAtd = lista2.ElementAt(i).matricula;
                nomeAtd = lista2.ElementAt(i).nomeAtendente;
            }
        }


        //Botão buscar estação
        private void btBuscaEst_Click(object sender, EventArgs e)
        {
            est.codigo = tbBuscaEst.Text;
            tbBuscaEst.Clear();

            List<Estacao> lista3 = new DadosEstacao().buscar(est);

            for (int i = 0; i < lista3.Count; i++)
            {
                lbCodEst.Text = "Cod: " + lista3.ElementAt(i).codigo + "";
                lbNomeEst.Text = "Nome: " + lista3.ElementAt(i).nome + "";
                codEst = lista3.ElementAt(i).codigo;
                nomeEst = lista3.ElementAt(i).nome;
            }
        }


        //Botão buscar bicicleta
        private void btBuscaBic_Click(object sender, EventArgs e)
        {
            bic.codigo = tbBuscaBic.Text;
            tbBuscaBic.Clear();

            List<Bicicleta> lista4 = new DadosBicicleta().buscar(bic);

            for (int i = 0; i < lista4.Count; i++)
            {
                lbBicicleta.Text = "Cod: " + lista4.ElementAt(i).codigo + "";
                codBic = lista4.ElementAt(i).codigo;
            }
        }


        //Botão buscar passe
        private void btBuscarPasse_Click(object sender, EventArgs e)
        {
            tPasse.codigo = Int32.Parse(tbBuscarPasse.Text);
            tbBuscarPasse.Clear();

            List<TipoPasse> lista5 = new DadosTipoPasse().buscar(tPasse);

            for (int i = 0; i < lista5.Count; i++)
            {
                lbTipoPasse.Text = "TipoPasse: " + lista5.ElementAt(i).descricao + "";
                lbValorPasse.Text = "Valor: " + lista5.ElementAt(i).valor + "";
                tipoPasse = lista5.ElementAt(i).codigo;

            }
        }


        //Botão nova pesquisa
        private void btNovaBusca_Click(object sender, EventArgs e)
        {

            user.cpf = tbCpf.Text;
            tbCpf.Clear();
            lvUserAluguel.Items.Clear();

            List<Usuario> lista = new DadosUsuario().buscar(user);

            for (int i = 0; i < lista.Count; i++)
            {
                ListViewItem item = lvUserAluguel.Items.Add(lista.ElementAt(i).cpf);
                item.SubItems.Add(lista.ElementAt(i).nome);
                item.SubItems.Add(lista.ElementAt(i).numeroCartaoCredito);
                item.SubItems.Add(lista.ElementAt(i).numeroTelefone);

                cpfUser = item.SubItems[0].Text;
                nomeUser = item.SubItems[1].Text;
                numCartao = item.SubItems[2].Text;
                numTelefone = item.SubItems[3].Text;
            }
        }

        private void leetSocket1_OnReceiveCompletedDataEVENT(object value, byte[] bArray)
        {

        }
    }
}
